﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cotizav.CONEXION;
using System.Data.Linq;

namespace Cotizav
{
    public class CtrlModelo
    {
        private ConexionDataContext conexion;

        internal List<MODELO> getListModelo(string idMarca)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    DataLoadOptions dlo = new DataLoadOptions();
                    dlo.LoadWith<MODELO>(m => m.MARCA);
                    conexion.LoadOptions = dlo;
                    var query = conexion.MODELO.Where(x => x.idMarca == idMarca && x.eliminado == 0).ToList();
                    return query;
                }
                catch (Exception)
                {                    
                    throw;
                }
            }
        }

        internal void registrarModelo(MODELO mod)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    int correlativoModelo = conexion.COTIZAV_CORRELATIVO.Single(x => x.IDENTIFICADOR == "COTIZAV").MODELO.Value;
                    string num = Convert.ToString(correlativoModelo);
                    string numero = num.Trim().PadLeft(11, '0');
                    string idModelo = "MOD_" + numero;

                    mod.idModelo = idModelo;

                    conexion.MODELO.InsertOnSubmit(mod);
                    conexion.SubmitChanges();
                    conexion.increm_ContModelo();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        internal void eliminarModelo(MODELO modelo)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    MODELO mod = conexion.MODELO.SingleOrDefault(x => x.idModelo == modelo.idModelo && x.eliminado == 0);
                    mod.eliminado = 1;

                    conexion.SubmitChanges();
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        internal MODELO getModelo(string idSelectedNode)
        {
            using (conexion = new ConexionDataContext())
            {
                try
                {
                    MODELO mod = conexion.MODELO.SingleOrDefault(x => x.idModelo == idSelectedNode && x.eliminado == 0);
                    return mod;
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        internal bool actualizarModelo(string idSelectedNode, MODELO mod)
        {
            using (conexion = new ConexionDataContext())
            {
                bool result = false;
                try
                {
                    MODELO m = conexion.MODELO.SingleOrDefault(x => x.idModelo == idSelectedNode && x.eliminado == 0);
                    m.nombreModelo = mod.nombreModelo;

                    conexion.SubmitChanges();
                    result = true;
                    return result;
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

        internal bool verificarNombreModelo(string nombreModelo, string idParentNode)
        {
            using (conexion = new ConexionDataContext())
            {
                bool result = false;
                var query = conexion.MODELO.Where(x => x.nombreModelo == nombreModelo && x.idMarca == idParentNode && x.eliminado == 0);
                if (query.Count() > 0)
                {
                    result = true;
                }
                else
                {
                    result = false;
                }

                return result;
            }
        }
    }
}
